package cl.zeke.remoto.negocio.services.impl;

import cl.zeke.comun.dto.Persona;
import cl.zeke.remoto.negocio.services.*;
import cl.zeke.remoto.finders.PerfilFinder;
import cl.zeke.remoto.negocio.entities.Perfil;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.context.annotation.ScopedProxyMode;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

@Service
@Scope(proxyMode = ScopedProxyMode.INTERFACES)
public class ComunesServiceImpl implements ComunesService {
    
    private static Logger log = LoggerFactory.getLogger(ComunesServiceImpl.class);
    
    @Autowired
    private PerfilFinder perfilDao;
    
    @Transactional(readOnly = true)
    @Override
    public List<Perfil> traerTodosLosPerfiles() {
        return perfilDao.traerTodos();
    }

    @Override
    public Persona traerPersona(String nombre) {
        Persona p =  new Persona();
        p.setNombre(nombre + " agregado en server");
        p.setEdad(21);
        
        Persona p2 =  new Persona();
        p2.setNombre(nombre + " hermano");
        p2.setEdad(10);
        
        p.setFamiliares(new Persona[]{p2, p2});
        return p;
    }

    @Override
    public void procesarPersona(Persona persona) {
            log.info("procesando persona");
            log.info("p: " + persona.getNombre() + " " + persona.getEdad());
            for (Persona f : persona.getFamiliares()) {
                log.info("f: " + f.getNombre() + " " + f.getEdad());
            }
    }
    
}
